🎸 Proyecto: PyChella Festival Manager
Bienvenido al equipo de producción de PyChella, el festival de música más grande del código fuente. Tu trabajo es desarrollar el sistema para gestionar a los artistas, los escenarios y los horarios del evento.
Este proyecto evaluará tus conocimientos en Programación Orientada a Objetos y el uso avanzado de Listas y Diccionarios.
📋 Requisitos del Proyecto
1. Sistema de Artistas (artistas.py)
Debes crear una jerarquía de clases para representar a los talentos contratados.
Clase Base: Artista
- Atributos:
nombre: (str) Nombre artístico.cache: (float) Lo que cobra por actuar.genero: (str) Rock, Pop, Techno, Indie, etc.
- Métodos:
__init__: Constructor.__str__: Devuelve una ficha del artista (Nombre - Género - Caché).actuar(): Método genérico que imprime: "El artista [nombre] está actuando".- Método Mágico
__lt__: Necesario para poder ordenar artistas. La comparación debe hacerse por caché (de menor a mayor o viceversa, como prefieras, pero constante).
Subclase: Banda
Grupos formados por varias personas.
- Hereda de:
Artista. - Atributos extra:
integrantes: Una lista de nombres (strings).
- Polimorfismo:
actuar(): Debe imprimir "La banda [nombre] saluda: ¡Hola PyChella! Somos [lista_integrantes]".
Subclase: DJ
Artistas electrónicos.
- Hereda de:
Artista. - Atributos extra:
equipo: (str) Por ejemplo "Mesa Pioneer", "Portátil", "Vinilos".
- Polimorfismo:
actuar(): Debe imprimir "El DJ [nombre] comienza a mezclar con su [equipo]".
2. El Organizador (festival.py)
Aquí demostrarás tu destreza con las estructuras de datos.
Clase: Festival
-
Atributos:
nombre: Nombre del evento.escenarios: Un diccionario que representa los escenarios y sus line-ups.- Clave: Nombre del escenario (ej: "Main Stage", "Techno Tent").
- Valor: Una lista que contendrá objetos de tipo
Artista. - Inicialización recomendada: Puedes iniciar el diccionario con claves vacías en el constructor.
-
Métodos:
contratar_artista(artista, nombre_escenario):- Verifica si el
nombre_escenarioexiste en el diccionario. - Si existe, añade el objeto
artistaa la lista correspondiente. - Si no existe, muestra un error.
- Verifica si el
ver_cartel(): Recorre el diccionario de escenarios y, para cada uno, imprime la lista de artistas que actuarán allí. (Usa el__str__de los artistas).buscar_por_genero(genero):- Debe recorrer todos los escenarios.
- Devuelve una nueva lista con todos los artistas que coincidan con ese género, sin importar en qué escenario toquen.
3. Programa Principal (main.py)
Crea un script que simule la gestión del festival:
- Crea un
Festivalcon al menos 2 escenarios (ej: "Principal" y "Electrónica"). - Instancia varios artistas:
- Alguna
Bandafamosa. - Algún
DJ. - Algún
Artistasolista (instancia de la clase base).
- Alguna
- Usa
contratar_artistapara colocarlos en sus escenarios. - Llama a
ver_cartelpara comprobar qué tal queda la organización. - ¡Que empiece el show! Haz que los artistas de un escenario ejecuten su método
actuar(). - Prueba de ordenación: Consigue la lista de un escenario y ordénala por caché usando
sort()(gracias a__lt__).
🌟 Puntos Extra
- Presupuesto: Añade un método en
Festivalque calcule el coste total sumando elcachede todos los artistas de todos los escenarios. - Validaciones: Evita que una banda sin integrantes pueda crearse, o que el caché sea negativo.
¡Vamos a rockear código! 🤘